package com.xyzwps.mvckotlin.handler.helper

import org.springframework.web.reactive.function.server.ServerRequest
import org.springframework.web.reactive.function.server.ServerResponse
import reactor.core.publisher.Mono

/**
 * 这个 handler 用在 router 中。
 */
typealias RequestHandler = (ServerRequest) -> Mono<ServerResponse>

/**
 * 用来表示一个接受请求然后返回一个对象的 handler 函数。
 *
 * 返回的对象会被以 json 方式通过 http 返回。
 */
typealias JsonHandler<R> = suspend (ServerRequest) -> R

/**
 * 用来表示一个接口请求然后返回一个 ModelAndView 的函数。
 *
 * 返回的 ModelAndView 会被模板引擎渲染然后通过 http 返回。
 */
typealias MavHandler = suspend (ServerRequest) -> ModelAndView